perm filename CONECT.MAC[NET,MRC] blob sn#237776 filedate 1976-09-22 generic text, type T, neo UTF8
DCOBUF:	BLOCK 3
DCIBUF:	BLOCK 3
CONECB:	BLOCK 7

; POSITIONS IN MTAPE BLOCK

STLOC==1	; STATUS BITS RETURNED HERE
LSLOC==2	; LOCAL SOCKET
WFLOC==3	; WAIT FLAG
BSLOC==4	; BYTE SIZE LOCATION
FSLOC==5	; FOREIGN SOCKET
HLOC==6		; HOST NUMBER

; IO ERROR BITS

ERRBTS==763600

; OTHER RANDOM THINGS

TERBLK:	3		; TERMINATE BLOCK
	0		; STATUS BITS
	1		; FOREIGN SOCKET LOC
	0		; DON'T WAIT

STTBLK:	2
	BLOCK 2

ICP:	BEGINR
; TOVAR SAYS THIS IS THE RIGHT THING TO DO - MRC
	PJOB REG2,
	MOVSS REG4,REG2		; RECEIVE SOCKET
	ADDI REG4,1		; TRANSMIT SOCKET
	INIT dcchan,17
	SIXBIT /IMP/
	0
	 JRST ICPLUZ
	SETZM CONECB
	MOVEM REG2,CONECB+LSLOC
	MOVEI REG3,DCHOST
	MOVEM REG3,CONECB+HLOC
	SETOM CONECB+WFLOC
	MOVEI REG3,40
	MOVEM REG3,CONECB+BSLOC
	MOVEI REG3,DCSOKT
	MOVEM REG3,CONECB+FSLOC
	MTAPE dcchan,[
		↑D15
		BYTE (6) 2,24,0,12,12
		]		; TIME OUT CLS, RFNM, RFC, AND INPUT
	MTAPE dcchan,CONECB
	STATZ dcchan,ERRBTS
	 JRST ICPLUZ		; NO CONNECTION TO LOGGER
	INPUT dcchan,[IOWD 1,FRS#
		0]
	STATZ dcchan,ERRBTS
	 JRST ICPLUZ		; GOT LOGGER BUT DIDN'T GET SOCKET FROM HIM
	MOVE REG3,FRS
	LSH REG3,-4
	MOVEM REG3,FRS
	ADDI REG3,1
	MOVEM REG3,FSS#
	ADDI REG2,2
	MOVEM REG2,LRS#
	ADDI REG4,2
	MOVEM REG4,LSS#
	MOVE REG1,CONECB+LSLOC
	MOVEM REG1,TERBLK+LSLOC
	MTAPE dcchan,TERBLK	; RELEASE LOGGER
	INIT dcchan,1
	SIXBIT /IMP/
	XWD DCOBUF,DCIBUF
	 JRST ICPLUZ
	MTAPE dcchan,[
		↑D15
		BYTE (6) 5,24,0,12,0
		]		; TIME OUT CLS, RFNM, AND RFC
	INBUF dcchan,2
	OUTBUF dcchan,2
	MOVEI REG1,↑D36
	DPB REG1,[POINT 6,DCIBUF+1,11]
	DPB REG1,[POINT 6,DCOBUF+1,11]
	MOVEM REG2,CONECB+LSLOC
	MOVEI REG3,DCHOST
	MOVEM REG3,CONECB+HLOC
	SETZM CONECB+WFLOC
	MOVEI REG3,↑D36
	MOVEM REG3,CONECB+BSLOC
	MOVE REG3,FSS
	MOVEM REG3,CONECB+FSLOC
	MTAPE dcchan,CONECB
	MOVE REG1,CONECB+STLOC
	TRNN REG1,-1
	 STATZ dcchan,ERRBTS
	  JRST ICPLUZ		; CAN'T CONNECT TO RECEIVE SIDE
	CALLR CLSCHK		; SEE IF WE ARE REALLY OPEN
	 JRST ICPLUZ
	AOS CONECB+LSLOC
	SOS CONECB+FSLOC
	MOVEI REG3,↑D36
	MOVEM REG3,CONECB+BSLOC
	MTAPE dcchan,CONECB
	MOVE REG1,CONECB+STLOC
	TRNN REG1,-1
	 STATZ dcchan,ERRBTS
	  JRST ICPLUZ		; CAN'T CONNECT TO SEND SIDE
	CALLR CLSCHK
	 JRST ICPLUZ
	MOVEI REG3,4
	MOVEM REG3,CONECB
	MTAPE dcchan,CONECB
	MOVE REG1,CONECB+STLOC
	TLC REG1,300000
	TLCN REG1,300000
	 TLNE REG1,060000
	  JRST ICPLUZ
	STATZ dcchan,ERRBTS
	 JRST ICPLUZ
	SOS CONECB+LSLOC
	CALLR CLSCHK
	 JRST ICPLUZ
	MTAPE dcchan,CONECB
	MOVE REG1,CONECB+STLOC
	TLC REG1,300000
	TLCN REG1,300000
	 TLNE REG1,060000
	  JRST ICPLUZ
	STATZ dcchan,ERRBTS
	 JRST ICPLUZ		; LOST WHILE WAITING FOR RECEIVE SIDE TO CONNECT
	CALLR CLSCHK
	 JRST ICPLUZ
	ENDR
 
; ROUTINE TO CHECK IF SOCKET CLOSED ON ME

CLSCHK:	BEGINR
	MTAPE dcchan,STTBLK
	MOVE REG1,STTBLK+1
	IOR REG1,STTBLK+2
	STATO dcchan,ERRBTS
	TLNN REG1,060000
	 AOS (STAK)
	ENDR

; HERE WHEN CONNECTION FAILS

ICPLUZ:	OUTSTR [ASCIZ/? CANNOT ESTABLISH NETWORK CONNECTION/]
	EXIT
ββ